﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Nage.Algorithms.Solution;

namespace Nage.Algorithms.Population
{
    /// <summary>
    /// Population factory interface.
    /// When implemented, it provides methods for creating a new population
    /// </summary>
    /// <typeparam name="TSol">Type of the solution</typeparam>
    public interface IPopulationFactory<TSol> 
        where TSol : ISolution
    {
        /// <summary>
        /// Solution factory
        /// </summary>
        ISolutionFactory<TSol> SolutionFactory { get; }

        /// <summary>
        /// Creates a new population
        /// </summary>
        /// <returns>population</returns>
        IPopulation<TSol> CreatePopulation();
    }
}
